---
title: PdfAPI.SyncFusionCore operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-17
library: PdfAPI.SyncFusionCore
reference_type: package
---

# PdfAPI.SyncFusionCore operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under `operations/`. This library performs no database access, so no operation carries a Tables or SQL citation.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules |
| --- | --- | --- | --- | --- | --- |
| [Convert a source document to PDF](operations/convert-source-document-to-pdf.md) | Dispatch a conversion request to the converter matching the source file extension. | Caller request (`SyncfusionPdfService.Convert`) | `ConvertRequest` | `PdfResult` | [BR-SFC-001](business-rules.md#br-sfc-001-null-conversion-request-rejected), [BR-SFC-002](business-rules.md#br-sfc-002-case-insensitive-extension-normalization), [BR-SFC-003](business-rules.md#br-sfc-003-extension-to-converter-mapping) |
| [Execute a single conversion (converter template)](operations/execute-single-conversion.md) | Run the shared conversion pipeline: timing, error capture, and `PdfResult` assembly around the per-format `ConvertItem` hook. | Called by `ConverterFactory.Convert` | `Stream`, `ConvertRequest` | `PdfResult` | [BR-SFC-006](business-rules.md#br-sfc-006-result-stamped-syncfusion-processor), [BR-SFC-007](business-rules.md#br-sfc-007-conversion-success-requires-non-null-document), [BR-SFC-010](business-rules.md#br-sfc-010-conversion-exceptions-captured-not-rethrown) |
| [Word document to PDF](operations/word-document-to-pdf.md) | Convert a `.doc`/`.docx` source to PDF via the Syncfusion Word-to-PDF engine. | Called by OP-SFC-001 for `doc`/`docx` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-011](business-rules.md#br-sfc-011-pdf%2Fa-conformance-level-a1b) |
| [Excel workbook to PDF](operations/excel-workbook-to-pdf.md) | Convert an `.xls`/`.xlsx` workbook to PDF via the Syncfusion Excel-to-PDF engine. | Called by OP-SFC-001 for `xls`/`xlsx` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-011](business-rules.md#br-sfc-011-pdf%2Fa-conformance-level-a1b) |
| [RTF document to PDF](operations/rtf-document-to-pdf.md) | Render RTF text into a metafile and draw it across as many pages as needed. | Called by OP-SFC-001 for `rtf` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-012](business-rules.md#br-sfc-012-ascii-only-source-text-reading), [BR-SFC-013](business-rules.md#br-sfc-013-rtf-text-flows-across-pages) |
| [Plain text to PDF](operations/plain-text-to-pdf.md) | Paginate plain text at a fixed line count per page and render each block with fixed typography. | Called by OP-SFC-001 for `txt` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-014](business-rules.md#br-sfc-014-fixed-40-lines-per-page-pagination), [BR-SFC-015](business-rules.md#br-sfc-015-fixed-text-typography) |
| [Raster image to PDF](operations/raster-image-to-pdf.md) | Draw a single raster image (GIF/JPEG/PNG) into a single-page PDF. | Called by OP-SFC-001 for `gif`/`jpg`/`jpeg`/`png` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-016](business-rules.md#br-sfc-016-single-image-produces-single-page), [BR-SFC-017](business-rules.md#br-sfc-017-image-and-frame-stretched-to-full-page) |
| [TIFF to multi-page PDF](operations/tiff-to-multi-page-pdf.md) | Draw one PDF page per frame of a multi-frame TIFF image. | Called by OP-SFC-001 for `tif`/`tiff` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-018](business-rules.md#br-sfc-018-tiff-pages-have-zero-margins), [BR-SFC-019](business-rules.md#br-sfc-019-one-pdf-page-per-tiff-frame) |
| [PDF pass-through or PDF/A upgrade](operations/pdf-passthrough-or-pdfa-upgrade.md) | Return a PDF source unchanged, or upgrade it to PDF/A conformance. | Called by OP-SFC-001 for `pdf` | `Stream`, `ConvertRequest` | PDF bytes or `null` | [BR-SFC-020](business-rules.md#br-sfc-020-pdf%2Fa-applied-via-reload-and-resave), [BR-SFC-021](business-rules.md#br-sfc-021-plain-pdf-returned-unchanged) |
| [HTML to PDF](operations/html-to-pdf.md) | Render HTML to PDF using the Syncfusion Internet Explorer-based engine. | Called by OP-SFC-001 for `html` | `Stream`, `ConvertRequest` | PDF bytes | [BR-SFC-022](business-rules.md#br-sfc-022-html-rendered-with-ie-engine), [BR-SFC-023](business-rules.md#br-sfc-023-html-converted-with-empty-base-url) |
| [Extract page ranges from a PDF](operations/extract-page-ranges-from-pdf.md) | Build a new PDF from selected page ranges of a source PDF, honoring ascending/descending and open-ended ranges. | Caller request (`SyncfusionPdfService.Extract`); also called internally by OP-SFC-012 | `ExtractPagesRequest` | PDF bytes | [BR-SFC-024](business-rules.md#br-sfc-024-full-document-range-returned-unchanged), [BR-SFC-025](business-rules.md#br-sfc-025-out-of-range-pages-clamped-or-skipped), [BR-SFC-026](business-rules.md#br-sfc-026-open-ended-stop-page-means-last-page), [BR-SFC-027](business-rules.md#br-sfc-027-descending-range-reverses-page-order) |
| [Merge document ranges into one PDF](operations/merge-document-ranges-into-one-pdf.md) | Merge multiple document ranges into a single PDF, optionally applying a post-merge PDF/A pass. | Caller request (`SyncfusionPdfService` via `new PdfMerger(environmentService, logService)`) | `MergeRequest`, optional `trackingId` | `PdfResult` | [BR-SFC-029](business-rules.md#br-sfc-029-merge-performed-at-no-conformance), [BR-SFC-030](business-rules.md#br-sfc-030-whole-file-or-extracted-subset-per-range), [BR-SFC-031](business-rules.md#br-sfc-031-pdf%2Fa-replaces-plain-pdf-only-on-success), [BR-SFC-032](business-rules.md#br-sfc-032-pdf%2Fa-merge-failure-logged-as-warning), [BR-SFC-033](business-rules.md#br-sfc-033-merge-result-always-reported-succeeded) |
| [Inspect and flatten PDF form fields](operations/inspect-and-flatten-pdf-form-fields.md) | Detect AcroForm fields and, when present, flatten them to make them non-editable. | `PdfService` call sites, when the caller opts out of the remote client | `byte[]` PDF | `bool` or `byte[]` | [BR-SFC-034](business-rules.md#br-sfc-034-form-fields-detected-by-non-null-form), [BR-SFC-035](business-rules.md#br-sfc-035-flatten-makes-fields-non-editable), [BR-SFC-036](business-rules.md#br-sfc-036-flatten-without-form-returns-input-unchanged) |
| [Build an application exception detail](operations/build-application-exception-detail.md) | Construct a diagnostic `ApplicationExceptionDetail` record for a caught exception. | Called by OP-SFC-012 step 6 and four `PdfAPI\Services\` call sites | `IEnvironmentService`, page label, message, `Exception` | `ApplicationExceptionDetail` | [BR-SFC-037](business-rules.md#br-sfc-037-exception-detail-attributed-to-pdfapi), [BR-SFC-038](business-rules.md#br-sfc-038-exception-detail-captures-diagnostic-context) |
| [Register the Syncfusion runtime license](operations/register-syncfusion-runtime-license.md) | Register the embedded Syncfusion license key with the Syncfusion runtime once per process. | `PdfAPI\Global.asax.cs` (`Application_Start`) | none | none | [BR-SFC-039](business-rules.md#br-sfc-039-syncfusion-license-registered-once-per-process) |

## Process flow diagram
The following diagram visualizes the primary operational flow across operations.

```mermaid
flowchart TD
	Start([ConvertRequest received]) --> Null{"Request null?"}
	Null -->|Yes| ThrowErr([ArgumentNullException])
	Null -->|No| Norm[Normalize file extension]
	Norm --> Dispatch{"Extension matches<br>a converter?"}
	Dispatch -->|"Word/Excel/RTF/Image/<br>TIFF/HTML/PDF"| Convert[Run BaseConverter template]
	Dispatch -->|Text| ConvertText[Convert text to PDF]
	Dispatch -->|No match| Unknown([Return Unknown result])
	ConvertText --> Recurse["Recursively convert<br>produced PDF for PDF/A"]
	Recurse --> Convert
	Convert --> Result([Return PdfResult])
```

## Failure and edge-case behavior
- A null `ConvertRequest` throws `ArgumentNullException` at the factory boundary
  ([BR-SFC-001](business-rules.md#br-sfc-001-null-conversion-request-rejected)); every other single-document conversion failure is captured into a failed `PdfResult` rather than thrown ([BR-SFC-010](business-rules.md#br-sfc-010-conversion-exceptions-captured-not-rethrown)).
- An unsupported file extension does not throw; it returns a non-throwing `PdfResult` carrying
  `SourceConversionType.Unknown` ([BR-SFC-005](business-rules.md#br-sfc-005-unsupported-extension-reported-not-thrown)).
- Extraction and merge failures propagate to the caller instead of being captured
  ([BR-SFC-028](business-rules.md#br-sfc-028-extraction-and-merge-failures-propagate)), except that a failure in the merge's post-processing PDF/A pass is caught and logged, not thrown ([BR-SFC-032](business-rules.md#br-sfc-032-pdf%2Fa-merge-failure-logged-as-warning)).
- Page ranges beyond the end of a document are clamped or skipped rather than raising an error
  ([BR-SFC-025](business-rules.md#br-sfc-025-out-of-range-pages-clamped-or-skipped)).

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

## Sources
- `PdfApi.SyncFusionCore\Convert\ConverterFactory.cs`
- `PdfApi.SyncFusionCore\Convert\BaseConverter.cs`
- `PdfApi.SyncFusionCore\Convert\WordConverter.cs`
- `PdfApi.SyncFusionCore\Convert\ExcelConverter.cs`
- `PdfApi.SyncFusionCore\Convert\RtfConverter.cs`
- `PdfApi.SyncFusionCore\Convert\TxtConverter.cs`
- `PdfApi.SyncFusionCore\Convert\ImageConverter.cs`
- `PdfApi.SyncFusionCore\Convert\TiffConverter.cs`
- `PdfApi.SyncFusionCore\Convert\PdfConverter.cs`
- `PdfApi.SyncFusionCore\Convert\HtmlConverter.cs`
- `PdfApi.SyncFusionCore\Extract\PdfExtractor.cs`
- `PdfApi.SyncFusionCore\Merge\PdfMerger.cs`
- `PdfApi.SyncFusionCore\PdfHelper.cs`
- `PdfApi.SyncFusionCore\LicenseHelper.cs`
- `PdfAPI\Services\Syncfusion\SyncfusionPdfService.cs`
- `PdfAPI\Services\PdfService.cs`
- `PdfAPI\Global.asax.cs`
